A graphics thread can access shared local memory (SLM) using a single instruction multiple data (SIMD) message, where each SIMD slot can address an arbitrary location in the SLM region. To provide high bandwidth, SLM has been typically implemented with multiple memory banks, each with a double word (Dword) sized data bus. Each bank of the SLM can provide up to one Dword, or four bytes of data per cycle. The banks can be accessed in parallel, giving the ability to access, in one access cycle, all of the data locations addressed by all the SIMD slots in a SIMD message. However, presence of “bank conflict” in the SIMD slots can reduce the effective bandwidth of the data transfer. Bank conflicts occurs when two or more SIMD slots in a SIMD message addresses the same SLM bank. If the number of access ports per bank is less than the number of slots that are conflicting on a bank, then all slots cannot be serviced by the bank in the same cycle, and access needs to be serialized.